home *** CD-ROM | disk | FTP | other *** search
/ PC-SIG: Games / PC-SIG Games (PC-SIG).iso / 993 / YAHTZEE.BAS (.txt) < prev    next >
Encoding:
GW-BASIC  |  1987-12-04  |  23.2 KB  |  974 lines

  1. 5  GOTO 10
  2. 7  SAVE"YAHTZEE.BAS":END
  3. 10  SCREEN 0,1,0
  4. 20  KEY OFF:WIDTH 80:CLS
  5. 30  FOR I = 1 TO 14
  6. 40  IF I=8 THEN 250
  7. 50  COLOR I
  8. 60  LOCATE 2,1
  9. 70  PRINT CHR$(201);STRING$(78,205);CHR$(187)
  10. 80  FOR ROW = 3 TO 13
  11. 90       LOCATE ROW,1:PRINT CHR$(186);:LOCATE ROW,80 :PRINT CHR$(186);
  12. 100  NEXT ROW
  13. 110  LOCATE 14,1
  14. 120  PRINT CHR$(200);STRING$(78,205);CHR$(188)
  15. 130  ABB$="Abbey & Son Software":ADD$="530 Troy Dr. #1"
  16. 140  CIT$="San Jose, CA. 95117-1354":TEL$="(408) 984-4947"
  17. 150  COP$="Copyright June & November 1987 By Ray Abbey"
  18. 160  TAK$="Please send $5.00 registration fee to Abbey & Son Software"
  19. 170  TAK2$="to recieve updates or fixes, as available, for one year."
  20. 180  LOCATE 4,(40-(LEN(ABB$)/2)):PRINT ABB$;
  21. 190  LOCATE 6,(40-(LEN(ADD$)/2)):PRINT ADD$;
  22. 200  LOCATE 8,(40-(LEN(CIT$)/2)):PRINT CIT$;
  23. 210  LOCATE 10,(40-(LEN(TEL$)/2)):PRINT TEL$;
  24. 220  LOCATE 12,(40-(LEN(COP$)/2)):PRINT COP$;
  25. 230  LOCATE 16,(80-LEN(TAK$))/2:PRINT TAK$;
  26. 240  LOCATE 18,(80-LEN(TAK2$))/2:PRINT TAK2$;
  27. 250  NEXT I
  28. 260  GOSUB 8140
  29. 270  LOCATE 20,27:PRINT "Press any key to continue."
  30. 280  K$=INKEY$:IF K$="" THEN 280
  31. 290  COLOR 2
  32. 300  IF LEN(INKEY$) THEN 300
  33. 310  CLEAR,,1000
  34. 320  WIDTH 40
  35. 330  FR1=17000:FR2=18000:FR3=19000:DU=3:VO=15:SW=1
  36. 340  DIM PLAYR$(4),TOTAL(4),KEEP(6,4),CHECK$(13)
  37. 350  DIM A(13),B(13),C(13),E(13)
  38. 360  DIM BLANK(50,50),WINNER(6,4)
  39. 370  CHECK$(1)="ACES":CHECK$(2)="TWOS":CHECK$(3)="THREES"
  40. 380  CHECK$(4)="FOURS":CHECK$(5)="FIVES":CHECK$(6)="SIXES"
  41. 390  CHECK$(7)="3 OF A KIND":CHECK$(8)="4 OF A KIND":CHECK$(9)="FULL HOUSE"
  42. 400  CHECK$(10)="SMALL STRAIGHT":CHECK$(11)="LARGE STRAIGHT"
  43. 410  CHECK$(12)="YAHTZEE":CHECK$(13)="CHANCE"
  44. 420  KEY(10) ON
  45. 430  KEY(9) ON
  46. 440  KEY(8) ON
  47. 450  ON KEY(10) GOSUB 7200
  48. 460  ON KEY(9) GOSUB 8170
  49. 470  ON KEY(8) GOSUB 8610
  50. 480  COLOR 6,0
  51. 490  VER$="PC YAHTZEE version 2.0"
  52. 500  COLOR 2
  53. 510  LOCATE 1,(40-LEN(VER$))/2:PRINT VER$;
  54. 520  PRINT:PRINT:COLOR 6,0
  55. 530  PRINT "CSRLIN     CSRLIN CSRLINCSRLINCSRLINCSRLINCSRLIN CSRLINCSRLINCSRLINCSRLINCSRLIN CSRLINCSRLINCSRLINCSRLINCSRLIN CSRLINCSRLINCSRLINCSRLINCSRLIN CSRLINCSRLINCSRLINCSRLINCSRLIN"
  56. 540  PRINT "CSRLIN     CSRLIN CSRLIN   CSRLIN   CSRLIN      INKEY$OFF CSRLIN     CSRLIN    "
  57. 550  PRINT "CSRLIN     CSRLIN CSRLIN   CSRLIN   CSRLIN      CSRLIN  CSRLIN     CSRLIN    "
  58. 560  PRINT "CSRLINCSRLINCSRLINCSRLINCSRLINCSRLINCSRLIN CSRLINCSRLINCSRLINCSRLINCSRLIN   CSRLIN     INKEY$OFF  CSRLINCSRLINCSRLIN   CSRLINCSRLINCSRLIN  "
  59. 570  PRINT "   CSRLIN    CSRLIN   CSRLIN   CSRLIN    INKEY$OFF   CSRLIN     CSRLIN    "
  60. 580  PRINT "   CSRLIN    CSRLIN   CSRLIN   CSRLIN   INKEY$OFF    CSRLIN     CSRLIN    "
  61. 590  PRINT "   CSRLIN    CSRLIN   CSRLIN   CSRLIN   CSRLINCSRLINCSRLINCSRLINCSRLIN CSRLINCSRLINCSRLINCSRLINCSRLIN CSRLINCSRLINCSRLINCSRLINCSRLIN"
  62. 600  PRINT
  63. 610  TR1$="Trademark Registered":TR2$="E. S. Lowe Company, Inc.":TR3$="200 Fifth Avenue":TR4$="New York, N.Y. 10010"
  64. 620  FUN$=" - Hot Keys - "
  65. 630  FUN1$="F8=Select Verify On/Off"
  66. 640  FUN2$="F9=Sound On/Off  F10=Quit"
  67. 650  COLOR 4
  68. 660  LOCATE 12,(40-LEN(TR1$))/2:PRINT TR1$;
  69. 670  COLOR 5
  70. 680  LOCATE 13,(40-LEN(TR2$))/2:PRINT TR2$;
  71. 690  COLOR 9
  72. 700  LOCATE 14,(40-LEN(TR3$))/2:PRINT TR3$;
  73. 710  COLOR 10
  74. 720  LOCATE 15,(40-LEN(TR4$))/2:PRINT TR4$;
  75. 730  COLOR 12
  76. 740  LOCATE 17,(40-LEN(FUN$))/2:PRINT FUN$;
  77. 750  COLOR 11
  78. 760  LOCATE 18,(40-LEN(FUN1$))/2:PRINT FUN1$;
  79. 770  COLOR 13
  80. 780  LOCATE 19,(40-LEN(FUN2$))/2:PRINT FUN2$;
  81. 790  F24$="\                       \"
  82. 800  F40$="\                                      \"
  83. 810  F80$="\                                                                              \"
  84. 820  QUE$="Do you wish instructions? (Y/N)"
  85. 830  GOSUB 8140
  86. 840  COLOR 6
  87. 850  LOCATE 22,(40-LEN(QUE$))/2:PRINT QUE$;
  88. 860  K$=INKEY$:IF K$="y" OR K$="Y" THEN GOSUB 9300:GOTO 890
  89. 870  IF K$="n" OR K$="N" THEN 900
  90. 880  GOTO 860
  91. 890  WIDTH 40:COLOR 4
  92. 900  FOR I=12 TO 22
  93. 910  LOCATE I,1
  94. 920  PRINT STRING$(40,32);
  95. 930  NEXT I
  96. 940  LOCATE 12,1
  97. 950  GOSUB 8140
  98. 960  PRINT "Player One - Enter first name, Please   ";
  99. 970  INPUT;"Six letters maximum- ",PL1$
  100. 980  PLAYR$(1)=LEFT$(PL1$,6)
  101. 990  IF LEFT$(PL1$,1)="" THEN 940
  102. 1000  LOCATE 15,1
  103. 1010  PRINT "Player Two - Enter first name, Please   ";
  104. 1020  GOSUB 8140
  105. 1030  INPUT;"Six letters maximum- ",PL2$
  106. 1040  IF LEFT$(PL2$,1)="" THEN PLAYERS = 1:GOTO 1190
  107. 1050  PLAYR$(2)=LEFT$(PL2$,6)
  108. 1060  LOCATE 18,1
  109. 1070  PRINT "Player Three-Enter first name, Please   ";
  110. 1080  GOSUB 8140
  111. 1090  INPUT;"Six letters maximum- ",PL3$
  112. 1100  IF LEFT$(PL3$,1)="" THEN PLAYERS = 2:GOTO 1190
  113. 1110  PLAYR$(3)=LEFT$(PL3$,6)
  114. 1120  LOCATE 21,1
  115. 1130  PRINT "Player Four -Enter first name, Please   ";
  116. 1140  GOSUB 8140
  117. 1150  INPUT;"Six letters maximum- ",PL4$
  118. 1160  IF LEFT$(PL4$,1)="" THEN PLAYERS = 3:GOTO 1190
  119. 1170  PLAYR$(4)=LEFT$(PL4$,6)
  120. 1180  PLAYERS = 4
  121. 1190  LOCATE 12,1
  122. 1200  FOR I=1 TO 12
  123. 1210     PRINT STRING$(40,32);
  124. 1220  NEXT I
  125. 1230  GOTO 1260
  126. 1240  SCREEN 0,1,0:WIDTH 40:COLOR 6'Second thru sixth game starts here
  127. 1250  FIRST=0:SECOND=0:THIRD=0:FOURTH=0
  128. 1260  COLOR 11:LOCATE 12,5
  129. 1270  PRINT "Player number one is  : ";PLAYR$(1);
  130. 1280  FOR I=1 TO 13
  131. 1290     A(I)=0:NEXT I
  132. 1300  IF PLAYERS = 1 THEN 1450
  133. 1310  LOCATE 14,5
  134. 1320  PRINT "Player number two is  : ";PLAYR$(2);
  135. 1330  FOR I=1 TO 13
  136. 1340     B(I)=0:NEXT I
  137. 1350  IF PLAYERS = 2 THEN 1450
  138. 1360  LOCATE 16,5
  139. 1370  PRINT "Player number three is: ";PLAYR$(3);
  140. 1380  FOR I=1 TO 13
  141. 1390     C(I)=0:NEXT I
  142. 1400  IF PLAYERS = 3 THEN 1450
  143. 1410  LOCATE 18,5
  144. 1420  PRINT "Player number four is : ";PLAYR$(4);
  145. 1430  FOR I=1 TO 13
  146. 1440     E(I)=0:NEXT I
  147. 1450  LOCATE 20,6
  148. 1460  PRINT "Are we ready to play? (Y/N) ";
  149. 1470  GOSUB 8140
  150. 1480  K$=INKEY$
  151. 1490  IF K$="Y" OR K$="y" THEN 1650
  152. 1500  IF K$="N" OR K$="n" THEN 1520
  153. 1510  GOTO 1480
  154. 1520  IF GAME=0 THEN 890
  155. 1530  'Add new players
  156. 1540  LOCATE 21,4:IF LEN(INKEY$) THEN 1540
  157. 1550  PRINT "Do you wish to add players? (Y/N)"
  158. 1560  K$=INKEY$:IF K$="N" OR K$="n" THEN 1650
  159. 1570  IF K$="" THEN 1560
  160. 1580  CLS:IF LEN(INKEY$) THEN 1580
  161. 1590  IF PLAYERS=1 THEN 1000
  162. 1600  IF PLAYERS=2 THEN 1060
  163. 1610  IF PLAYERS=3 THEN 1120
  164. 1620  LOCATE 23,4
  165. 1630  PRINT "Four players maximum, thank you."
  166. 1640  FOR WA =1 TO 3000:NEXT WA
  167. 1650  'insert screen set-up here
  168. 1660  WIDTH 80
  169. 1670  'SCORE SHEET
  170. 1680  '
  171. 1690  COLOR 2,0
  172. 1700  IF LEN(INKEY$) THEN 1700
  173. 1710  LOCATE 1,1
  174. 1720  IF PLAYERS=1 THEN PRINT "  YAHTZEE       PLAYER  ";
  175. 1730  IF PLAYERS=2 THEN PRINT "  YAHTZEE       PLAYER  PLAYER  ";
  176. 1740  IF PLAYERS=3 THEN PRINT "  YAHTZEE       PLAYER  PLAYER  PLAYER ";
  177. 1750  IF PLAYERS=4 THEN PRINT "  YAHTZEE       PLAYER  PLAYER  PLAYER  PLAYER ";
  178. 1760  LOCATE 2,1
  179. 1770  IF PLAYERS=1 THEN PRINT "UPPER SECTION     #1   ";
  180. 1780  IF PLAYERS=2 THEN PRINT "UPPER SECTION     #1      #2   ";
  181. 1790  IF PLAYERS=3 THEN PRINT "UPPER SECTION     #1      #2      #3   ";
  182. 1800  IF PLAYERS=4 THEN PRINT "UPPER SECTION     #1      #2      #3      #4   ";
  183. 1810  LOCATE 3,1
  184. 1820  COLOR 13
  185. 1830  PRINT "1";:COLOR 2:PRINT "> ACES";
  186. 1840  LOCATE 4,1
  187. 1850  COLOR 13
  188. 1860  PRINT "2";:COLOR 2:PRINT "> TWOS";
  189. 1870  LOCATE 5,1
  190. 1880  COLOR 13
  191. 1890  PRINT "3";:COLOR 2:PRINT "> THREES";
  192. 1900  LOCATE 6,1
  193. 1910  COLOR 13
  194. 1920  PRINT "4";:COLOR 2:PRINT "> FOURS";
  195. 1930  LOCATE 7,1
  196. 1940  COLOR 13
  197. 1950  PRINT "5";:COLOR 2:PRINT "> FIVES";
  198. 1960  LOCATE 8,1
  199. 1970  COLOR 13
  200. 1980  PRINT "6";:COLOR 2:PRINT "> SIXES";
  201. 1990  LOCATE 9,1
  202. 2000  PRINT "Totals";
  203. 2010  LOCATE 10,1
  204. 2020  PRINT "Bonus if > 62";
  205. 2030  LOCATE 11,1
  206. 2040  PRINT "Total w/Bonus";
  207. 2050  LOCATE 12,1
  208. 2060  IF PLAYERS=1 THEN PRINT "LOWER SECTION     #1   ";
  209. 2070  IF PLAYERS=2 THEN PRINT "LOWER SECTION     #1      #2   ";
  210. 2080  IF PLAYERS=3 THEN PRINT "LOWER SECTION     #1      #2      #3   ";
  211. 2090  IF PLAYERS=4 THEN PRINT "LOWER SECTION     #1      #2      #3      #4   ";
  212. 2100  LOCATE 13,1
  213. 2110  COLOR 13
  214. 2120  PRINT "7";:COLOR 2:PRINT "> 3 of a Kind";
  215. 2130  LOCATE 14,1
  216. 2140  COLOR 13
  217. 2150  PRINT "8";:COLOR 2:PRINT "> 4 of a Kind";
  218. 2160  LOCATE 15,1
  219. 2170  COLOR 13
  220. 2180  PRINT "9";:COLOR 2:PRINT "> Full House";
  221. 2190  LOCATE 16,1
  222. 2200  COLOR 13
  223. 2210  PRINT "A";:COLOR 2:PRINT "> Sm Straight";
  224. 2220  LOCATE 17,1
  225. 2230  COLOR 13
  226. 2240  PRINT "B";:COLOR 2:PRINT "> Lg Straight";
  227. 2250  LOCATE 18,1
  228. 2260  COLOR 13
  229. 2270  PRINT "C";:COLOR 2:PRINT "> YAHTZEE";
  230. 2280  LOCATE 19,1
  231. 2290  COLOR 13
  232. 2300  PRINT "D";:COLOR 2:PRINT "> Chance";
  233. 2310  LOCATE 20,1
  234. 2320  PRINT "Lower Total";
  235. 2330  LOCATE 21,1
  236. 2340  PRINT "Upper Total";
  237. 2350  LOCATE 22,1
  238. 2360  PRINT "GRAND TOTAL";
  239. 2370  FOR I=3 TO 22
  240. 2380     BORDER$="|"
  241. 2390     IF I=9 OR I=10 OR I=11 OR I=20 OR I=21 OR I=22 THEN COLOR 12:BORDER$="INSTR"
  242. 2400     LOCATE I,15:PRINT BORDER$;
  243. 2410     LOCATE I,23:PRINT BORDER$;
  244. 2420     IF PLAYERS=1 THEN 2480
  245. 2430     LOCATE I,31:PRINT BORDER$;
  246. 2440     IF PLAYERS=2 THEN 2480
  247. 2450     LOCATE I,39:PRINT BORDER$;
  248. 2460     IF PLAYERS=3 THEN 2480
  249. 2470     LOCATE I,47:PRINT BORDER$;
  250. 2480     COLOR 2:BORDER$="|"
  251. 2490  NEXT I
  252. 2500  'module to place dice on screen
  253. 2510  GOSUB 3940:COLOR 9,4
  254. 2520  LOCATE 15,49
  255. 2530  PRINT CHR$(201);:FOR I=1 TO 5
  256. 2540  PRINT STRING$(5,205);CHR$(203);
  257. 2550  NEXT:LOCATE CSRLIN,POS(C)-1
  258. 2560  PRINT CHR$(187);:ROW=15:COL=49
  259. 2570  FOR X=1 TO 3:LOCATE ROW+X,COL:FOR I=49 TO 80 STEP 6
  260. 2580  LOCATE ROW+X,I:PRINT CHR$(186);
  261. 2590  NEXT:NEXT:LOCATE 19,49
  262. 2600  PRINT CHR$(200);:FOR I=1 TO 5
  263. 2610  PRINT STRING$(5,205);CHR$(202);
  264. 2620  NEXT :LOCATE CSRLIN,POS(C)-1:PRINT CHR$(188);
  265. 2630  COLOR 2,0:LOCATE 20,51:FOR I=1 TO 5
  266. 2640  PRINT I;"   ";
  267. 2650  NEXT                                                  
  268. 2660  GOSUB 3940
  269. 2670  LOCATE 6,50
  270. 2680  PRINT "F10-Quit";
  271. 2690  GOSUB 8170:GOSUB 8610
  272. 2700  GOSUB 8170:GOSUB 8610
  273. 2710  '
  274. 2720  GOSUB 3950
  275. 2730  FOR TURN = 1 TO 13
  276. 2740     FOR PLAYER = 1 TO PLAYERS
  277. 2750        GOSUB 3940:COLOR 0,4
  278. 2760        LOCATE 16,50:C=50:GOSUB 9680
  279. 2770        LOCATE 16,56:C=56:GOSUB 9680
  280. 2780        LOCATE 16,62:C=62:GOSUB 9680
  281. 2790        LOCATE 16,68:C=68:GOSUB 9680
  282. 2800        LOCATE 16,74:C=74:GOSUB 9680
  283. 2810        COLOR 2,0
  284. 2820        LOCATE 11,62:PRINT "Player";
  285. 2830        COLOR 14,0
  286. 2840        LOCATE 12,62:PRINT USING "\    \";PLAYR$(PLAYER);
  287. 2850        COLOR 2,0
  288. 2860        GOSUB 3950
  289. 2870        LOCATE 25,10
  290. 2880        PRINT "It's your turn ";PLAYR$(PLAYER);", press any key to roll the dice.";
  291. 2890        GOSUB 8140
  292. 2900        K$=INKEY$:IF K$="" THEN 2900
  293. 2910        GOSUB 8580
  294. 2920        IF LEN(INKEY$) THEN 2920
  295. 2930        COLOR 0,4:GOSUB 3310:COLOR 2,0:GOSUB 4810:GOSUB 5090:GOSUB 4530:GOSUB 3960
  296. 2940        GOSUB 3950
  297. 2950     NEXT PLAYER
  298. 2960  NEXT TURN
  299. 2970  IF T4 > T14 AND T4 > T24 AND T4 >T34 THEN 3010 'Player 1 winner
  300. 2980  IF T14 > T4 AND T14 > T24 AND T14 >T34 THEN 3060 'Player 2 winner
  301. 2990  IF T24 > T4 AND T24 > T14 AND T24 >T34 THEN 3110 'Player 3 winner
  302. 3000  IF T34 > T4 AND T34 > T14 AND T34 >T24 THEN 3160 'Player 4 winner
  303. 3010  GOSUB 8580
  304. 3020  LOCATE 25,26
  305. 3030  PRINT "  You are the winner, ";PLAYR$(1);
  306. 3040  GOSUB 8330:WIN=1:GOSUB 8560
  307. 3050  GOTO 3210
  308. 3060  GOSUB 8580
  309. 3070  LOCATE 25,26
  310. 3080  PRINT "  You are the winner, ";PLAYR$(2);
  311. 3090  GOSUB 8330:WIN=2:GOSUB 8560
  312. 3100  GOTO 3210
  313. 3110  GOSUB 8580
  314. 3120  LOCATE 25,26
  315. 3130  PRINT "  You are the winner, ";PLAYR$(3);
  316. 3140  GOSUB 8330:WIN=3:GOSUB 8560
  317. 3150  GOTO 3210
  318. 3160  GOSUB 8580
  319. 3170  LOCATE 25,26
  320. 3180  PRINT "  You are the winner, ";PLAYR$(4);
  321. 3190  GOSUB 8330:WIN=4:GOSUB 8560
  322. 3200  GOTO 3210
  323. 3210  LOCATE 24,25
  324. 3220  PRINT "How about another game? (Y/N)";
  325. 3230  GOSUB 8140
  326. 3240  K$=INKEY$:IF K$="Y" OR K$="y" THEN GOTO 3270
  327. 3250  IF K$="N" OR K$="n" THEN GAME=GAME+1:GOSUB 7380:GOTO 7280
  328. 3260  GOTO 3240
  329. 3270  GAME=GAME+1
  330. 3280  IF LEN(INKEY$) THEN 3280
  331. 3290  GOSUB 7380
  332. 3300  GOTO 1240
  333. 3310  GOSUB 3940 'module to roll dice
  334. 3320  RANDOMIZE ((RND*1000)+1)
  335. 3330  COLOR 0,4
  336. 3340  GOSUB 3540:GOSUB 8070:GOSUB 3580:GOSUB 8070:GOSUB 3620:GOSUB 8070:GOSUB 3660:GOSUB 8070:GOSUB 3700
  337. 3350  GOSUB 3950:LOCATE 25,15
  338. 3360  DICE$="":IF LEN(INKEY$) THEN 3360
  339. 3370  GOSUB 8140:COLOR 2,0
  340. 3380  PRINT "Enter dice to reroll (12345) Second Roll- Press 'R' to Roll";
  341. 3390  GOSUB 3940:GOSUB 9190
  342. 3400  COLOR 2,0:GOSUB 8580
  343. 3410  IF DICE$="" THEN 3530
  344. 3420  GOSUB 9060
  345. 3430  COLOR 2,0:GOSUB 8580
  346. 3440  DICE$="":IF LEN(INKEY$) THEN 3440
  347. 3450  LOCATE 25,15
  348. 3460  GOSUB 8140
  349. 3470  PRINT "Enter dice to reroll (12345) Third Roll- Press 'R' to Roll";
  350. 3480  GOSUB 3940:GOSUB 9190
  351. 3490  COLOR 2,0:GOSUB 8580
  352. 3500  IF DICE$="" THEN 3530
  353. 3510  GOSUB 9060
  354. 3520  COLOR 2,0:GOSUB 8580
  355. 3530  RETURN
  356. 3540  ONE=INT(RND*6+1):D=0
  357. 3550  IF ONE <1 OR ONE >6 THEN 3540
  358. 3560  ON ONE GOSUB 3740,3750,3760,3770,3780,3790
  359. 3570  RETURN
  360. 3580  TWO=INT(RND*6+1):D=6
  361. 3590  IF TWO <1 OR TWO >6 THEN 3580
  362. 3600  ON TWO GOSUB 3740,3750,3760,3770,3780,3790
  363. 3610  RETURN
  364. 3620  THREE=INT(RND*6+1):D=12
  365. 3630  IF THREE <1 OR THREE >6 THEN 3620
  366. 3640  ON THREE GOSUB 3740,3750,3760,3770,3780,3790
  367. 3650  RETURN
  368. 3660  FOUR=INT(RND*6+1):D=18
  369. 3670  IF FOUR <1 OR FOUR >6 THEN 3660
  370. 3680  ON FOUR GOSUB 3740,3750,3760,3770,3780,3790
  371. 3690  RETURN
  372. 3700  FIVE=INT(RND*6+1):D=24
  373. 3710  IF FIVE <1 OR FIVE >6 THEN 3700
  374. 3720  ON FIVE GOSUB 3740,3750,3760,3770,3780,3790
  375. 3730  RETURN
  376. 3740  GOSUB 3800 :RETURN 'for snake eye
  377. 3750  GOSUB 3860:GOSUB 3880:RETURN ' two
  378. 3760  GOSUB 3860:GOSUB 3880:GOSUB 3800:RETURN 'three
  379. 3770  GOSUB 3860:GOSUB 3880:GOSUB 3900:GOSUB 3920:RETURN 'four
  380. 3780  GOSUB 3800:GOSUB 3860:GOSUB 3880:GOSUB 3900:GOSUB 3920:RETURN 'five
  381. 3790  GOSUB 3820:GOSUB 3840:GOSUB 3860:GOSUB 3880:GOSUB 3900:GOSUB 3920:RETURN 'six
  382. 3800  LOCATE 17,52+D ' used as 1 3 5
  383. 3810  PRINT CHR$(237);:RETURN
  384. 3820  LOCATE 17,50+D ' used as 6
  385. 3830  PRINT CHR$(237);:RETURN
  386. 3840  LOCATE 17,54+D ' used as 6
  387. 3850  PRINT CHR$(237);:RETURN
  388. 3860  LOCATE 18,50+D ' used as 2 3 4 5 6
  389. 3870  PRINT CHR$(237);:RETURN
  390. 3880  LOCATE 16,54+D ' used as 2 3 4 5 6
  391. 3890  PRINT CHR$(237);:RETURN
  392. 3900  LOCATE 18,54+D ' used as 4 5 6
  393. 3910  PRINT CHR$(237);:RETURN
  394. 3920  LOCATE 16,50+D ' used as 4 5 6
  395. 3930  PRINT CHR$(237);:RETURN
  396. 3940  RETURN
  397. 3950  RETURN
  398. 3960  T1=0:T11=0:T21=0:T31=0:T3=0:T13=0:T23=0:T33=0
  399. 3970  FOR I=1 TO 6 'RECALC ALL TOTALS-ALL PLAYERS
  400. 3980     T1=T1+A(I)
  401. 3990     T11=T11+B(I)
  402. 4000     T21=T21+C(I)
  403. 4010     T31=T31+E(I)
  404. 4020  NEXT I
  405. 4030  GOSUB 3940
  406. 4040  T2=T1:T12=T11:T22=T21:T32=T31
  407. 4050  IF T1>62 THEN T2=T1+35:LOCATE 10,19:PRINT "35";
  408. 4060  IF T11>62 THEN T12=T11+35:LOCATE 10,27:PRINT "35";
  409. 4070  IF T21>62 THEN T22=T21+35:LOCATE 10,35:PRINT "35";
  410. 4080  IF T31>62 THEN T32=T31+35:LOCATE 10,43:PRINT "35";
  411. 4090  FOR I=7 TO 13
  412. 4100     T3=T3+A(I)
  413. 4110     T13=T13+B(I)
  414. 4120     T23=T23+C(I)
  415. 4130     T33=T33+E(I)
  416. 4140  NEXT I
  417. 4150  T4=T3+T2+T5
  418. 4160  T14=T13+T12+T15
  419. 4170  T24=T23+T22+T25
  420. 4180  T34=T33+T32+T35
  421. 4190  GOSUB 3940
  422. 4200  BORD$="  INSTR "
  423. 4210  IF PLAYERS=1 THEN FORMAT$="####"
  424. 4220  IF PLAYERS=2 THEN FORMAT$="####"+BORD$+"####"
  425. 4230  IF PLAYERS=3 THEN FORMAT$="####"+BORD$+"####"+BORD$+"####"
  426. 4240  IF PLAYERS=4 THEN FORMAT$="####"+BORD$+"####"+BORD$+"####"+BORD$+"####"
  427. 4250  COLOR 12
  428. 4260  LOCATE 9,17
  429. 4270  IF PLAYERS=1 THEN PRINT USING FORMAT$;T1;
  430. 4280  IF PLAYERS=2 THEN PRINT USING FORMAT$;T1,T11;
  431. 4290  IF PLAYERS=3 THEN PRINT USING FORMAT$;T1,T11,T21;
  432. 4300  IF PLAYERS=4 THEN PRINT USING FORMAT$;T1,T11,T21,T31;
  433. 4310  LOCATE 11,17
  434. 4320  IF PLAYERS=1 THEN PRINT USING FORMAT$;T2;
  435. 4330  IF PLAYERS=2 THEN PRINT USING FORMAT$;T2,T12;
  436. 4340  IF PLAYERS=3 THEN PRINT USING FORMAT$;T2,T12,T22;
  437. 4350  IF PLAYERS=4 THEN PRINT USING FORMAT$;T2,T12,T22,T32;
  438. 4360  LOCATE 20,17
  439. 4370  IF PLAYERS=1 THEN PRINT USING FORMAT$;T3;
  440. 4380  IF PLAYERS=2 THEN PRINT USING FORMAT$;T3,T13;
  441. 4390  IF PLAYERS=3 THEN PRINT USING FORMAT$;T3,T13,T23;
  442. 4400  IF PLAYERS=4 THEN PRINT USING FORMAT$;T3,T13,T23,T33;
  443. 4410  LOCATE 21,17
  444. 4420  IF PLAYERS=1 THEN PRINT USING FORMAT$;T2;
  445. 4430  IF PLAYERS=2 THEN PRINT USING FORMAT$;T2,T12;
  446. 4440  IF PLAYERS=3 THEN PRINT USING FORMAT$;T2,T12,T22;
  447. 4450  IF PLAYERS=4 THEN PRINT USING FORMAT$;T2,T12,T22,T32;
  448. 4460  LOCATE 22,17
  449. 4470  IF PLAYERS=1 THEN PRINT USING FORMAT$;T4;
  450. 4480  IF PLAYERS=2 THEN PRINT USING FORMAT$;T4,T14;
  451. 4490  IF PLAYERS=3 THEN PRINT USING FORMAT$;T4,T14,T24;
  452. 4500  IF PLAYERS=4 THEN PRINT USING FORMAT$;T4,T14,T24,T34;
  453. 4510  COLOR 2
  454. 4520  RETURN
  455. 4530  'PRINT SCORES TO SCREEN
  456. 4540  IF PLAYER =1 THEN COL = 18
  457. 4550  IF PLAYER =2 THEN COL = 26
  458. 4560  IF PLAYER =3 THEN COL = 34
  459. 4570  IF PLAYER =4 THEN COL = 42
  460. 4580  IF PLAYER <1 OR PLAYER>4 THEN END
  461. 4590  GOSUB 3940
  462. 4600  POST=SELECT
  463. 4610  LOCATE 2,COL-1
  464. 4620  COLOR 14,0
  465. 4630  PRINT USING "\    \"; PLAYR$(PLAYER);
  466. 4640  COLOR 2,O
  467. 4650  ROW = POST + 2
  468. 4660  IF POST > 6 THEN ROW = POST + 6
  469. 4670  LOCATE ROW,COL
  470. 4680  PRINT USING "###";SCORE;
  471. 4690  ON PLAYER GOSUB 4710,4730,4750,4770
  472. 4700  GOTO 4790
  473. 4710  A(POST)=SCORE
  474. 4720  RETURN
  475. 4730  B(POST)=SCORE
  476. 4740  RETURN
  477. 4750  C(POST)=SCORE
  478. 4760  RETURN
  479. 4770  E(POST)=SCORE
  480. 4780  '
  481. 4790  SCORE=0
  482. 4800  RETURN
  483. 4810  'Get select from player
  484. 4820  NO=0
  485. 4830  GOSUB 3950
  486. 4840  LOCATE 25,16
  487. 4850  COLOR 4,0
  488. 4860  PRINT PLAYR$(PLAYER);", press key to select where to post score.";
  489. 4870  COLOR 2,0
  490. 4880  GOSUB 8140
  491. 4890  GOSUB 9500
  492. 4900  GOSUB 8580
  493. 4910  IF SELECT <1 OR SELECT >13 THEN GOTO 4840
  494. 4920  IF PLAYER =1 THEN COL = 20
  495. 4930  IF PLAYER =2 THEN COL = 28
  496. 4940  IF PLAYER =3 THEN COL = 36
  497. 4950  IF PLAYER =4 THEN COL = 44
  498. 4960  ROW = SELECT + 2
  499. 4970  IF SELECT >6 THEN ROW = SELECT + 6
  500. 4980  GOSUB 3940
  501. 4990  IF SCREEN(ROW,COL) >47 THEN 5010
  502. 5000  RETURN
  503. 5010  GOSUB 3950
  504. 5020  GOSUB 8580
  505. 5030  LOCATE 25,10
  506. 5040  PRINT "That's been selected.  Pick again.";
  507. 5050  BEEP
  508. 5060  FOR I=1 TO 1300:NEXT I
  509. 5070  GOSUB 8580
  510. 5080  GOTO 4840
  511. 5090  'DETERMINE SCORE OF DICE
  512. 5100  SC(1)=ONE
  513. 5110  SC(2)=TWO
  514. 5120  SC(3)=THREE
  515. 5130  SC(4)=FOUR
  516. 5140  SC(5)=FIVE
  517. 5150  FOR I=1 TO 4
  518. 5160     FOR J =I+1 TO 5
  519. 5170     IF SC(I) > SC(J) THEN SWAP SC(I),SC(J)
  520. 5180     NEXT J
  521. 5190  NEXT I
  522. 5200  IF SC(1)=SC(2) AND SC(2)=SC(3) AND SC(3)=SC(4) AND SC(4)=SC(5) THEN 5230
  523. 5210  SCORE = 0
  524. 5220  GOTO 5810
  525. 5230  GOSUB 3950
  526. 5240  COLOR 18,0
  527. 5250     GOSUB 8580
  528. 5260  LOCATE 25,18
  529. 5270     PRINT "YAHTZEE    YAHTZEE     YAHTZEE     YAHTZEE";
  530. 5280  GOSUB 8270
  531. 5290  COLOR 2,0
  532. 5300  ON PLAYER GOTO 5310,5330,5350,5370
  533. 5310  IF FIRST=0 THEN FIRST=1:GOTO 5390
  534. 5320  IF FIRST=1 THEN T5=T5+100:GOTO 5390
  535. 5330  IF SECOND=0 THEN SECOND=1 :GOTO 5390
  536. 5340  IF SECOND=1 THEN T15=T15+100:GOTO 5390
  537. 5350  IF THIRD=0 THEN THIRD=1:GOTO 5390
  538. 5360  IF THIRD=1 THEN T25=T25+100:GOTO 5390
  539. 5370  IF FOURTH=0 THEN FOURTH=1:GOTO 5390
  540. 5380  IF FOURTH=1 THEN T35=T35+100:GOTO 5390
  541. 5390  IF SELECT=12 GOTO 5810
  542. 5400  ROW=18:GOSUB 5680:ROW =0:IF PICK=0 THEN SELECT=12:GOTO 5810
  543. 5410  IF SC(1)=1 THEN SELECT=1:SCORE=5
  544. 5420  IF SC(1)=2 THEN SELECT=2:SCORE=10
  545. 5430  IF SC(1)=3 THEN SELECT=3:SCORE=15
  546. 5440  IF SC(1)=4 THEN SELECT=4:SCORE=20
  547. 5450  IF SC(1)=5 THEN SELECT=5:SCORE=25
  548. 5460  IF SC(1)=6 THEN SELECT=6:SCORE=30
  549. 5470  GOSUB 5680
  550. 5480  IF PICK=0 THEN RETURN
  551. 5490  SELECT=0:SCORE=0
  552. 5500  GOSUB 3950:GOSUB 5600
  553. 5510  IF SELECT =7 OR SELECT =8 OR SELECT =13 THEN 5810
  554. 5520  IF SELECT=9 THEN SCORE = 25
  555. 5530  IF SELECT=10 THEN SCORE=30
  556. 5540  IF SELECT=11 THEN SCORE=40
  557. 5550  RETURN
  558. 5560  GOSUB 3950:LOCATE 24,10
  559. 5570  BEEP
  560. 5580  PRINT "You ignoramus, ";PLAYR$(PLAYER);" pick an open slot for this yahtzee.";
  561. 5590  GOTO 5620
  562. 5600  LOCATE 24,10
  563. 5610  PRINT "Since the appropriate box in the UPPER section has been used, then...";
  564. 5620  LOCATE 25,1
  565. 5630  PRINT "This Yahtzee can be a JOKER in the lower section. Pick 7, 8, 9, A, B or D";
  566. 5640  GOSUB 8140
  567. 5650  GOSUB 9500
  568. 5660  GOSUB 8580
  569. 5670  IF SELECT <7 THEN SCORE =0:RETURN
  570. 5680  IF PLAYER =1 THEN COL = 20
  571. 5690  IF PLAYER =2 THEN COL = 28
  572. 5700  IF PLAYER =3 THEN COL = 36
  573. 5710  IF PLAYER =4 THEN COL = 44
  574. 5720  IF ROW=18 THEN 5780
  575. 5730  IF SELECT <7 THEN ROW=SELECT+2:GOTO 5780
  576. 5740  ROW = SELECT + 6
  577. 5750  GOSUB 3940
  578. 5760  IF SCREEN(ROW,COL) >47 THEN 5560
  579. 5770  RETURN
  580. 5780  GOSUB 3940:PICK=0
  581. 5790  IF SCREEN(ROW,COL) >47 THEN PICK=1
  582. 5800  RETURN
  583. 5810  IF SELECT =1 THEN 5820 ELSE 5880
  584. 5820  FOR I=1 TO 5
  585. 5830     IF SC(I)=1 THEN SCORE = SCORE +1
  586. 5840  NEXT I
  587. 5850  GOSUB 8440
  588. 5860  IF NO=1 THEN GOSUB 4810:GOTO 5810
  589. 5870  RETURN
  590. 5880  IF SELECT =2 THEN 5890 ELSE 5950
  591. 5890  FOR I=1 TO 5
  592. 5900     IF SC(I)=2 THEN SCORE = SCORE +2
  593. 5910  NEXT I
  594. 5920  GOSUB 8440
  595. 5930  IF NO=1 THEN GOSUB 4810:GOTO 5810
  596. 5940  RETURN
  597. 5950  IF SELECT =3 THEN 5960 ELSE 6020
  598. 5960  FOR I=1 TO 5
  599. 5970     IF SC(I)=3 THEN SCORE = SCORE +3
  600. 5980  NEXT I
  601. 5990  GOSUB 8440
  602. 6000  IF NO=1 THEN GOSUB 4810:GOTO 5810
  603. 6010  RETURN
  604. 6020  IF SELECT =4 THEN 6030 ELSE 6090
  605. 6030  FOR I=1 TO 5
  606. 6040     IF SC(I)=4 THEN SCORE = SCORE +4
  607. 6050  NEXT I
  608. 6060  GOSUB 8440
  609. 6070  IF NO=1 THEN GOSUB 4810:GOTO 5810
  610. 6080  RETURN
  611. 6090  IF SELECT =5 THEN 6100 ELSE 6160
  612. 6100  FOR I=1 TO 5
  613. 6110     IF SC(I)=5 THEN SCORE = SCORE +5
  614. 6120  NEXT I
  615. 6130  GOSUB 8440
  616. 6140  IF NO=1 THEN GOSUB 4810:GOTO 5810
  617. 6150  RETURN
  618. 6160  IF SELECT =6 THEN 6170 ELSE 6230
  619. 6170  FOR I=1 TO 5
  620. 6180     IF SC(I)=6 THEN SCORE = SCORE +6
  621. 6190  NEXT I
  622. 6200  GOSUB 8440
  623. 6210  IF NO=1 THEN GOSUB 4810:GOTO 5810
  624. 6220  RETURN
  625. 6230  IF SELECT =7 THEN 6240 ELSE 6340
  626. 6240  IF SC(1)=SC(2) AND SC(2)=SC(3) THEN 6280
  627. 6250  IF SC(2)=SC(3) AND SC(3)=SC(4) THEN 6280
  628. 6260  IF SC(3)=SC(4) AND SC(4)=SC(5) THEN 6280
  629. 6270  GOTO 6760
  630. 6280  FOR I=1 TO 5
  631. 6290     SCORE=SCORE + SC(I)
  632. 6300  NEXT I
  633. 6310  GOSUB 8440
  634. 6320  IF NO=1 THEN GOSUB 4810:GOTO 5810
  635. 6330  RETURN
  636. 6340  IF SELECT = 8 THEN 6350 ELSE 6440
  637. 6350  GOSUB 8440
  638. 6360  IF NO=1 THEN GOSUB 4810:GOTO 5810
  639. 6370  IF SC(1)=SC(2) AND SC(2)=SC(3) AND SC(3)=SC(4) THEN 6400
  640. 6380  IF SC(2)=SC(3) AND SC(3)=SC(4) AND SC(4)=SC(5) THEN 6400
  641. 6390  GOTO 6760
  642. 6400  FOR I=1 TO 5
  643. 6410     SCORE=SCORE + SC(I)
  644. 6420  NEXT I
  645. 6430  RETURN
  646. 6440  IF SELECT = 9 THEN 6450 ELSE 6500
  647. 6450  GOSUB 8440
  648. 6460  IF NO=1 THEN GOSUB 4810:GOTO 5810
  649. 6470  IF SC(1) = SC(2) AND SC(2) = SC(3) AND SC(4) = SC(5) THEN SCORE = 25
  650. 6480  IF SC(1) = SC(2) AND SC(3) = SC(4) AND SC(4) = SC(5) THEN SCORE = 25
  651. 6490  IF SCORE <> 25 THEN 6760
  652. 6500  IF SELECT = 10 THEN 6510 ELSE 6580
  653. 6510  GOSUB 8440
  654. 6520  IF NO=1 THEN GOSUB 4810:GOTO 5810
  655. 6530  IF SC(1)=SC(2)-1 AND SC(2) = SC(3)-1 AND SC(3)=SC(4)-1 THEN SCORE = 30:RETURN
  656. 6540  IF SC(2)=SC(3)-1 AND SC(3) = SC(4)-1 AND SC(4)=SC(5)-1 THEN SCORE = 30:RETURN
  657. 6550  IF SC(1)=SC(2)-1 AND SC(2)=SC(3) AND SC(3)=SC(4)-1 AND SC(4)=SC(5)-1 THEN SCORE = 30:RETURN
  658. 6560  IF SC(1)=SC(2)-1 AND SC(2)=SC(3)-1 AND SC(3)=SC(4) AND SC(4)=SC(5)-1 THEN SCORE = 30:RETURN
  659. 6570  GOTO 6760
  660. 6580  IF SELECT = 11 THEN 6590 ELSE 6630
  661. 6590  GOSUB 8440
  662. 6600  IF NO=1 THEN GOSUB 4810:GOTO 5810
  663. 6610  IF SC(1)=SC(2)-1 AND SC(2) = SC(3)-1 AND SC(3)=SC(4)-1 AND SC(4)=SC(5)-1 THEN SCORE = 40:RETURN
  664. 6620  GOTO 6760
  665. 6630  IF SELECT = 12 THEN 6640 ELSE 6680
  666. 6640  GOSUB 8440
  667. 6650  IF NO=1 THEN GOSUB 4810:GOTO 5810
  668. 6660  IF SC(1) = SC(2) AND SC(2) = SC(3) AND SC(3) = SC(4) AND SC(4) = SC(5) THEN SCORE = 50:RETURN
  669. 6670  GOTO 6760
  670. 6680  IF SELECT = 13 THEN 6690 ELSE RETURN
  671. 6690  GOSUB 8440
  672. 6700  IF NO=1 THEN GOSUB 4810:GOTO 5810
  673. 6710  SCORE = 0
  674. 6720  FOR I=1 TO 5
  675. 6730     SCORE = SCORE + SC(I)
  676. 6740  NEXT I
  677. 6750  RETURN
  678. 6760  'select reject module
  679. 6770  GOSUB 3950
  680. 6780  REJECT = SELECT - 6
  681. 6790  ON REJECT GOTO 6840,6900,6960,7020,7080,7140
  682. 6800  SCORE = 0
  683. 6810  ZERO=0
  684. 6820  GOSUB 8580
  685. 6830  RETURN
  686. 6840  '3 of a kind - no way
  687. 6850  IF SW=0 THEN 6860 ELSE BEEP
  688. 6860  LOCATE 24,10:PRINT "Are you blind ";PLAYR$(PLAYER);", this ain't no 3 of a kind!";
  689. 6870  GOSUB 8390
  690. 6880  IF ZERO=1 THEN 6800
  691. 6890  GOTO 5090
  692. 6900  '4 of a kind - no way
  693. 6910  IF SW=0 THEN 6920 ELSE BEEP
  694. 6920  LOCATE 24,10:PRINT "You make me laugh ";PLAYR$(PLAYER);", this ain't no 4 of a kind!";
  695. 6930  GOSUB 8390
  696. 6940  IF ZERO=1 THEN 6800
  697. 6950  GOTO 5090
  698. 6960  'Full House - no way
  699. 6970  IF SW=0 THEN 6980 ELSE BEEP
  700. 6980  LOCATE 24,17:PRINT "Hey, ";PLAYR$(PLAYER);", Full House means a pair and 3 of a kind!";
  701. 6990  GOSUB 8390
  702. 7000  IF ZERO=1 THEN 6800
  703. 7010  GOTO 5090
  704. 7020  'Small Straight no way
  705. 7030  IF SW=0 THEN 7040 ELSE BEEP
  706. 7040  LOCATE 24,15:PRINT "Hey, ";PLAYR$(PLAYER);", can't you even make a small straight??";
  707. 7050  GOSUB 8390
  708. 7060  IF ZERO=1 THEN 6800
  709. 7070  GOTO 5090
  710. 7080  'Large Straight no way
  711. 7090  IF SW=0 THEN 7100 ELSE BEEP
  712. 7100  LOCATE 24,7:PRINT "Hey, ";PLAYR$(PLAYER);", don't play poker if you want to keep your money!!";
  713. 7110  GOSUB 8390
  714. 7120  IF ZERO=1 THEN 6800
  715. 7130  GOTO 5090
  716. 7140  'YAHTZEE  no way
  717. 7150  IF SW=0 THEN 7160 ELSE BEEP
  718. 7160  LOCATE 24,12:PRINT "Hey, Wise Guy, I mean ";PLAYR$(PLAYER);", this ain't no Yahtzee !!!";
  719. 7170  GOSUB 8390
  720. 7180  IF ZERO=1 THEN 6800
  721. 7190  GOTO 5090
  722. 7200  GOSUB 3950
  723. 7210  LOCATE 24,1
  724. 7220  PRINT "You have pressed the ";:COLOR 4:PRINT "QUIT";:COLOR 2:PRINT " button, press 'Y'to quit or 'N' to continue.";
  725. 7230  FOR BP=1 TO 3:BEEP:FOR BQ=1 TO 500:NEXT BQ:NEXT BP
  726. 7240  K$ = INKEY$
  727. 7250  IF K$="Y" OR K$="y" THEN 7280
  728. 7260  IF K$="N" OR K$="n" THEN 7370
  729. 7270  GOTO 7240
  730. 7280  SCREEN 0,1,0:WIDTH 40
  731. 7290  IF LEN(INKEY$) THEN 7290
  732. 7300  WIDTH 80:COLOR 2
  733. 7310  LOCATE 10,15
  734. 7320  PRINT "You are still in basic. If you press 'N', you will";
  735. 7330  LOCATE 12,15
  736. 7340  PRINT "drop into DOS. Press anything else to stay in basic.";
  737. 7350  K$=INKEY$:IF K$="N" OR K$="n" THEN SYSTEM
  738. 7360  IF K$<>"" THEN END ELSE 7350
  739. 7370  GOSUB 8580:VIEW PRINT :RETURN
  740. 7380  'Module for scorekeeper
  741. 7390  'Collect player names and scores-game 1
  742. 7400  TOTAL(1)=T4:T4=0
  743. 7410  TOTAL(2)=T14:T14=0
  744. 7420  TOTAL(3)=T24:T24=0
  745. 7430  TOTAL(4)=T34:T34=0
  746. 7440  T5=0:T15=0:T25=0:T35=0
  747. 7450  IF PLAYER >4 THEN PLAYER=4
  748. 7460  FOR I=1 TO PLAYER
  749. 7470     KEEP(GAME,I)=TOTAL(I)
  750. 7480  NEXT I
  751. 7490  IF GAME=1 THEN RETURN
  752. 7500  SCREEN 0,1,0
  753. 7510  '
  754. 7520  CLS
  755. 7530  COLOR 1
  756. 7540  IF PLAYERS=4 THEN CO=16
  757. 7550  IF PLAYERS=3 THEN CO=21
  758. 7560  IF PLAYERS=2 THEN CO=26
  759. 7570  IF PLAYERS=1 THEN CO=31
  760. 7580  FOR I=1 TO PLAYER
  761. 7590     LOCATE 3,CO+(10*I)
  762. 7600     PRINT USING "\    \";PLAYR$(I);
  763. 7610  NEXT I
  764. 7620  FOR G=1 TO GAME
  765. 7630     ROW=G+4
  766. 7640     COLOR 8+G
  767. 7650     LOCATE ROW,CO
  768. 7660     PRINT "Game ";G;
  769. 7670     COLOR 2
  770. 7680     FOR I=1 TO PLAYERS
  771. 7690        LOCATE ROW,CO+(10*I)
  772. 7700        PRINT USING "####";KEEP(G,I);
  773. 7710        COLOR 3
  774. 7720        IF WINNER(G,I)=1 THEN PRINT " *";
  775. 7730        COLOR 2
  776. 7740     NEXT I
  777. 7750  NEXT G
  778. 7760  ROW=12
  779. 7770  LOCATE ROW,CO
  780. 7780  PRINT "Totals";
  781. 7790  FOR I=1 TO PLAYERS
  782. 7800     FOR G=1 TO GAME
  783. 7810     GRAND=GRAND+KEEP(G,I)
  784. 7820  NEXT G
  785. 7830  LOCATE ROW,CO+(10*I)
  786. 7840  COLOR 12
  787. 7850  PRINT USING "####";GRAND
  788. 7860  GRAND=0:NEXT I
  789. 7870  IF GAME=6 THEN 7990
  790. 7880  COLOR 3
  791. 7890  LOCATE 22,20
  792. 7900  PRINT "* - Indicates winner of individual game";
  793. 7910  COLOR 12
  794. 7920  LOCATE 25,28
  795. 7930  PRINT "Press any key to continue";
  796. 7940  GOSUB 8140
  797. 7950  K$=INKEY$:IF K$="" THEN 7950
  798. 7960  WIDTH 40
  799. 7970  WIDTH 80
  800. 7980  RETURN
  801. 7990  LOCATE 14,1:COLOR 6
  802. 8000  PRINT "You have played six games of Yahtzee.  The winner should buy everybody dinner!!"
  803. 8010  LOCATE 16,25:COLOR 13
  804. 8020  PRINT "Unless it's me, that is.";
  805. 8030  LOCATE 18,25:COLOR 12
  806. 8040  PRINT "Press any key to continue.";
  807. 8050  GOSUB 8140
  808. 8060  K$=INKEY$:IF K$<>"" THEN 7280 ELSE 8060
  809. 8070  'click sounds of dice
  810. 8080  IF SW=0 THEN RETURN
  811. 8090  SOUND FR1,DU
  812. 8100  SOUND FR2,DU
  813. 8110  SOUND FR3,DU
  814. 8120  SOUND FR1,DU
  815. 8130  RETURN
  816. 8140  IF SW=0 THEN RETURN 'Attention sound-needs player entry
  817. 8150  SOUND 1200,1
  818. 8160  RETURN
  819. 8170  'Sound switch
  820. 8180  IF SW=0 THEN SW=1:GOTO 8200
  821. 8190  IF SW=1 THEN SW=0
  822. 8200  GOSUB 3940
  823. 8210  SOU$="\          \"
  824. 8220  LOCATE 5,50
  825. 8230  IF SW=1 THEN COLOR 2,0:PRINT USING SOU$;"F9-Sound On";
  826. 8240  IF SW=0 THEN COLOR 4,0:PRINT USING SOU$;"F9-Sound Off";
  827. 8250  '
  828. 8260  RETURN
  829. 8270  IF SW=0 THEN RETURN ELSE PLAY "MFL16T155O2"
  830. 8280  PLAY "CCD8E8F8O1B8O2E8O1B8O2G#8E8B8"
  831. 8290  PLAY "G#8O3E8O2B8O3E8O2B8O3G#8E8B8G#8O4E4
  832. 8300  PLAY "P8EEE8E8E8E8E4P8.
  833. 8310  PLAY "EE4P8.O2EE2
  834. 8320  RETURN
  835. 8330  IF SW=0 THEN RETURN ELSE 8340
  836. 8340  PLAY "MSL4O2T200CEGAB-A8G.ECEGAB-A8G.EFAO3CDE-D8"
  837. 8350  PLAY "C.O2ACEGAB-A8G.EGBO3DEFE8D.O2BCEGAB-"
  838. 8360  PLAY "A8G.ECEGAB-AGECEGAB-AGEFAO3CDE-DCO2A"
  839. 8370  PLAY "CEGAB-AGEGBO3DEFEDO2BCEGAB-AG"
  840. 8380  RETURN
  841. 8390  LOCATE 25,9:PRINT "Do you wish to RE-SELECT or ZERO this?? Enter 1 thru D or Z  ";
  842. 8400  GOSUB 8140
  843. 8410  ZERO=0:GOSUB 9500
  844. 8420  GOSUB 8580
  845. 8430  RETURN
  846. 8440  IF CHEX=0 THEN RETURN
  847. 8450  GOSUB 3950
  848. 8460  GOSUB 8580
  849. 8470  NO=0
  850. 8480  LOCATE 25,20
  851. 8490  GOSUB 8140
  852. 8500  PRINT "You selected ";CHECK$(SELECT);", is that correct? (Y/N)";
  853. 8510  K$=INKEY$:IF K$="Y" OR K$="y" THEN GOSUB 8580:RETURN
  854. 8520  IF K$="N" OR K$="n" THEN 8540
  855. 8530  GOTO 8510
  856. 8540  NO=1:GOSUB 8580
  857. 8550  SCORE=0:RETURN
  858. 8560  WINNER(GAME + 1,WIN)=1
  859. 8570  RETURN
  860. 8580  GOSUB 3950:LOCATE 24,1:PRINT STRING$(79,32);
  861. 8590  LOCATE 25,1:PRINT STRING$(79,32);
  862. 8600  RETURN
  863. 8610  IF CHEX=1 THEN CHEX=0:GOTO 8630
  864. 8620  IF CHEX=0 THEN CHEX=1
  865. 8630  GOSUB 3940
  866. 8640  FORM$="\           \"
  867. 8650  LOCATE 4,50
  868. 8660  IF CHEX=0 THEN COLOR 4,0:PRINT USING FORM$;"F8-Verify Off";
  869. 8670  IF CHEX=1 THEN COLOR 2,0:PRINT USING FORM$;"F8-Verify On";
  870. 8680  '
  871. 8690  RETURN
  872. 8700  'reroll register
  873. 8710  L=VAL(K$)
  874. 8720  IF L=1 THEN GOTO 8770
  875. 8730  IF L=2 THEN GOTO 8790
  876. 8740  IF L=3 THEN GOTO 8810
  877. 8750  IF L=4 THEN GOTO 8830
  878. 8760  IF L=5 THEN GOTO 8850
  879. 8770  IF D1=0 THEN D1=1:GOTO 8870
  880. 8780  IF D1=1 THEN D1=O:GOTO 8900
  881. 8790  IF D2=0 THEN D2=1:GOTO 8870
  882. 8800  IF D2=1 THEN D2=O:GOTO 8900
  883. 8810  IF D3=0 THEN D3=1:GOTO 8870
  884. 8820  IF D3=1 THEN D3=O:GOTO 8900
  885. 8830  IF D4=0 THEN D4=1:GOTO 8870
  886. 8840  IF D4=1 THEN D4=O:GOTO 8900
  887. 8850  IF D5=0 THEN D5=1:GOTO 8870
  888. 8860  IF D5=1 THEN D5=O:GOTO 8900
  889. 8870  LOCATE 20,45+(6*L):COLOR 12,0
  890. 8880  L$=STR$(L):PRINT L$;
  891. 8890  COLOR 2:GOSUB 8140:RETURN
  892. 8900  LOCATE 20,45+(6*L):COLOR 2,0
  893. 8910  L$=STR$(L):PRINT L$;
  894. 8920  GOSUB 8140:RETURN
  895. 8930  'DICE$ FOR REROLL ON SPIN
  896. 8940  DICE$="":GOSUB 3940
  897. 8950  IF D1=1 THEN DICE$=DICE$+"1"
  898. 8960  IF D2=1 THEN DICE$=DICE$+"2"
  899. 8970  IF D3=1 THEN DICE$=DICE$+"3"
  900. 8980  IF D4=1 THEN DICE$=DICE$+"4"
  901. 8990  IF D5=1 THEN DICE$=DICE$+"5"
  902. 9000  FOR L=1 TO 5
  903. 9010     LOCATE 20,45+(6*L):COLOR 2,0
  904. 9020     L$=STR$(L):PRINT L$;
  905. 9030  NEXT L
  906. 9040  D1=0:D2=0:D3=0:D4=0:D5=0
  907. 9050  RETURN
  908. 9060  FOR P=1 TO LEN(DICE$)+1
  909. 9070  GOSUB 3940
  910. 9080     X=VAL(MID$(DICE$,P,1)):COLOR 0,4
  911. 9090     IF X<1 OR X>5 THEN 9170
  912. 9100     IF X=1 THEN LOCATE 16,50:C=50:GOSUB 9680
  913. 9110     IF X=2 THEN LOCATE 16,56:C=56:GOSUB 9680
  914. 9120     IF X=3 THEN LOCATE 16,62:C=62:GOSUB 9680
  915. 9130     IF X=4 THEN LOCATE 16,68:C=68:GOSUB 9680
  916. 9140     IF X=5 THEN LOCATE 16,74:C=74:GOSUB 9680
  917. 9150     GOSUB 8070
  918. 9160     ON X GOSUB 3540,3580,3620,3660,3700
  919. 9170  NEXT P
  920. 9180  COLOR 2,0:RETURN
  921. 9190  K$=INKEY$
  922. 9200  IF K$="1" THEN GOSUB 8700:GOTO 9260
  923. 9210  IF K$="2" THEN GOSUB 8700:GOTO 9260
  924. 9220  IF K$="3" THEN GOSUB 8700:GOTO 9260
  925. 9230  IF K$="4" THEN GOSUB 8700:GOTO 9260
  926. 9240  IF K$="5" THEN GOSUB 8700:GOTO 9260
  927. 9250  IF K$="r" OR K$="R" THEN GOSUB 8930:GOTO 9270
  928. 9260  GOTO 9190
  929. 9270  GOSUB 3950
  930. 9280  IF LEN(INKEY$) THEN 9280
  931. 9290  RETURN
  932. 9300  WIDTH 80:COLOR 2 'Module to read instructions-Yahtzee.doc
  933. 9310  OPEN "I",1,"YAHTZEE.DOC"
  934. 9320  L=0
  935. 9330  CLS
  936. 9340  IF EOF(1) THEN 9450
  937. 9350  LINE INPUT#1, A$
  938. 9360  PRINT USING F80$;A$
  939. 9370  L=L+1
  940. 9380  IF L=22 THEN 9420
  941. 9390  IF L=42 THEN 9420
  942. 9400  IF L=62 THEN 9420
  943. 9410  GOTO 9340
  944. 9420  PRINT:COLOR 6:PRINT TAB(28) "Press any key to continue";
  945. 9430  COLOR 2
  946. 9440  K$=INKEY$:IF K$<>"" THEN 9330 ELSE 9440
  947. 9450  CLOSE 1
  948. 9460  COLOR 6
  949. 9470  PRINT TAB(27)"Press any key to start play";
  950. 9480  COLOR 2
  951. 9490  K$=INKEY$:IF K$<>"" THEN RETURN ELSE 9490
  952. 9500  'Select choice
  953. 9510  K$=INKEY$
  954. 9520  IF K$="1" THEN SELECT=1:GOTO 9670
  955. 9530  IF K$="2" THEN SELECT=2:GOTO 9670
  956. 9540  IF K$="3" THEN SELECT=3:GOTO 9670
  957. 9550  IF K$="4" THEN SELECT=4:GOTO 9670
  958. 9560  IF K$="5" THEN SELECT=5:GOTO 9670
  959. 9570  IF K$="6" THEN SELECT=6:GOTO 9670
  960. 9580  IF K$="7" THEN SELECT=7:GOTO 9670
  961. 9590  IF K$="8" THEN SELECT=8:GOTO 9670
  962. 9600  IF K$="9" THEN SELECT=9:GOTO 9670
  963. 9610  IF K$="A" OR K$="a" THEN SELECT=10:GOTO 9670
  964. 9620  IF K$="B" OR K$="b" THEN SELECT=11:GOTO 9670
  965. 9630  IF K$="C" OR K$="c" THEN SELECT=12:GOTO 9670
  966. 9640  IF K$="D" OR K$="d" THEN SELECT=13:GOTO 9670
  967. 9650  IF K$="z" OR K$="Z" THEN ZERO=1:GOTO 9670
  968. 9660  GOTO 9510
  969. 9670  RETURN
  970. 9680  FOR I=16 TO 18:LOCATE I,C
  971. 9690  PRINT "     ";
  972. 9700  NEXT
  973. 9710  RETURN
  974.